package learning.algorithm.list;

public interface List<E> {

    int ELEMENT_NOT_FOUND = -1;

    /**
     * 清空列表
     */
    void clear();

    /**
     * 元素数量
     */
    int size();

    /**
     * 列表是否为空
     */
    boolean isEmpty();

    /**
     * 是否包含某个元素
     */
    boolean contains(E element);

    /**
     * 添加元素
     */
    void add(E element);

    /**
     * 获取索引位置的元素
     */
    E get(int index);

    /**
     * 设置索引位置元素
     */
    E set(int index, E element);

    /**
     * 在索引位置添加元素
     */
    void add(int index, E element);

    /**
     * 删除索引位置元素，并返回原索引位置的元素
     */
    E remove(int index);

    /**
     * 返回元素在列表中首次出现的索引位置
     */
    int indexOf(E element);
}
